package com.hejia.alauda.persistence.mybatis;

import java.util.*;

import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.hejia.alauda.entity.Award;
import com.hejia.alauda.entity.Qualification;
import com.hejia.alauda.persistence.BaseMapper;

public interface QualificationMapper extends BaseMapper<Qualification> {
	
	@SuppressWarnings("rawtypes")
	List findQualificationList();

	/**
	 * 查询用户能否获取流量包
	 * 
	 * @param type 活动类型
	 * @param date 查询的时间
	 * @param dateFormat 查询时间格式
	 * @param used　是否已经领过流量包 （true or false）
	 * @param userId 用户id (非必须条件)
	 * 
	 * @return 流量包已领取次数
	 * */
	byte findTrafficReslt(Map<String, Object> params);

	/**
     * 查询2015年4月送流量的活动中奖用户名单
     * 
     * map 包含以下参数信息
     * @param type 流量活动类型
     * @param used 中奖情况
     * @param today 当天中奖者 
     * 
     * @return 中奖用户信息（mobile 和  奖品信息）
     */
	List<Map<String,String>> trafficWinners(Map<String, Object> params);

	/**
	 * 获取抽奖活动用户手机号码跟奖品名称 
	 * 
	 * */
	List<Map<String, String>> findQualifications(Map<String, Object> params);
	
	/**
	 * 计算有多少优酷过来的用户得到了月卡和季卡
	 * @return
	 */
	@Select("SELECT COUNT(DISTINCT user_id) FROM `qualification` WHERE (`awardCode`=\'YOUKU_MONTH_CARD\' OR `awardCode`=\'YOUKU_SEASON_CARD\') AND `type`=\'优酷会员卡活动（2015年）\'")
	int calculateYoukuCardCount();
	
	@Select("SELECT user_id,(SELECT `user`.realName FROM `user` WHERE `user`.id=qualification.user_id) AS `realName`,COUNT(id) AS ranks,MAX(createDate) as createDate FROM qualification WHERE awardCode=#{awardCode} AND type=#{type} GROUP BY user_id ORDER BY ranks DESC,createDate LIMIT 0,3")
	@ResultType(value=Map.class)
	List<Map<String, Object>> findYoukuRank(Map<String, Object> params);
	
	@Update("UPDATE `qualification` SET `used`=true,`modifyDate`=NOW() WHERE `used`=#{used} AND `awardCode`=#{awardCode} AND `type`=#{type} AND `user_id`=#{user_id}")
	int updateQualificationThroughJiayuan(Map<String, Object> params);
}
